package com.yzh.oop4;

/**
 * 为什么接口开始支持非抽象方法了
 *
 *
 */
public interface MyInterface {

    //抽象方法:实现类必须实现，否则就是抽象类
    public abstract void method1();

    //非抽象方法1：static方法（JDK7及其之前不允许出现static方法）
    //1.只能通过接口名调用，不能通过对象名调用
    //2.实现类不能重写
    public static void method2(){
        System.out.println("非抽象方法,不可可以被重写的静态方法");
    }

    //非抽象方法2：非static方法-default
    //1.不能通过接口名调用，只能通过对象名调用
    //2.可以不重写而是继承，也可以重写但是必须去掉default
    public default void method3(){
        System.out.println("非抽象方法,可以被重写的默认方法");
        method4();
    }

    //JDK9的新特征：可以出现private非抽象方法，不需要写default
    private void method4(){
        System.out.println("非抽象方法,私有普通方法");
    }
}
